package com.ntschy.sys.service;

import com.ntschy.common.core.entity.dataobject.SysMenu;
import com.ntschy.common.core.entity.dataobject.SysRole;

import java.util.List;
import java.util.Set;

public interface ISysRoleService {

    // * ================================================基础增删改查BEGIN============================================= *

    /**
     * 获取角色列表
     * 当前查询条件：角色名称 | 权限字符
     * @param role 角色对象
     * @return 角色列表
     */
    List<SysRole> pageRole(SysRole role);

    /**
     * 根据角色ID获取角色详情
     * @param roleId 角色ID
     * @return 角色
     */
    SysRole fetchRole(String roleId);

    /**
     * 新增角色
     * @param role 角色对象
     * @return 新增结果
     */
    int addRole(SysRole role);

    /**
     * 根据id更新角色
     * @param role 角色对象
     * @return 更新结果
     */
    int updateRole(SysRole role);

    /**
     * 根据角色ID删除角色
     * @param roleId 角色ID
     * @return 删除结果
     */
    int deleteRole(String roleId);
    // * =================================================基础增删改查END============================================== *

    /**
     * 获取角色对应菜单[按钮2]列表
     * @param roleKey 角色key
     * @return 菜单列表
     */
    List<SysMenu> listMenuBtnByRole(String roleKey);

    /**
     * 获取角色对应菜单[菜单1]列表
     * @param roleKey 角色key
     * @return 菜单列表
     */
    List<SysMenu> listMenuByRole(String roleKey);

    /**
     * 校验角色名称是否存在
     * @param roleName 角色名称
     * @return 校验结果
     */
    boolean checkRoleNameExist(String roleName);

    /**
     * 校验角色标示是否存在
     * @param roleKey 角色标示
     * @return 校验结果
     */
    boolean checkRoleKeyExist(String roleKey);

    /**
     * 新增角色菜单数据
     * @param role 角色对象
     * @return 新增结果
     */
    int addRoleMenu(SysRole role);

    Set<String> listRolePermissionByUserId(String userId);
}
